package com.designPattern.singleton;

/**
 * 【单例模式】
 * 【饿汉式】的第二种写法
 * 【静态代码块式的饿汉式】
 * 【优缺点和第一种方式没有区别】
 * 【优点】这种写法在类装载的时候就应完成类初始化，避免了线程同步的问题
 * 【缺点】这种写法在装载的时候就完成了初始化，没有达到懒加载(lazy loading)的效果，如果从未使用过这个类就会造成内存的浪费
 * 【总结】可用，但会造成内存浪费
 * @author mxs
 */
public class Type2 {
    public static void main(String[] args) {
        Instance instance = Singleton2.getInstance();
        Instance instance1 = Singleton2.getInstance();
        System.out.println(instance.hashCode() == instance1.hashCode());
    }
}
class Singleton2{
    private static Instance instance;
    //在静态代码块中创建单例模式
    static {
        instance = new Instance();
    }
    private Singleton2(){}
    //提供一个共有静态方法返回实例对象
    public static Instance getInstance() {
        return instance;
    }
}
class ClassMathContextAplication{

}